Full-Text Catalogs এবং Full-Text Indexes SQL Server-এ ব্যবহৃত হয় যখন আপনি টেক্সট ডেটা অনুসন্ধান করতে চান, বিশেষত দীর্ঘ বা অ-স্ট্রাকচারড টেক্সট ডেটা যেমন নথি, বার্তা বা লম্বা কলামের মধ্যে। এগুলি সাধারণ SQL Indexes থেকে আলাদা, কারণ এগুলি ডেটাবেসের কলামে শব্দ বা শব্দগুচ্ছ অনুসন্ধান করার জন্য তৈরি করা হয়, যা টেক্সট ডেটার সাথে কাজ করা সহজ করে।
Full-Text Catalogs এবং Indexes কী?
- Full-Text Catalog:
- এটি একটি সংকলন (collection) যা এক বা একাধিক Full-Text Indexes ধারণ করে। এটি পূর্ণ-প্রত্যাশিত টেক্সট অনুসন্ধান পরিচালনার জন্য তৈরি করা হয়। Full-Text Catalog একটি লজিক্যাল অবজেক্ট যা টেক্সট ডেটার জন্য ইনডেক্সিং প্রক্রিয়া পরিচালনা করে।
- Full-Text Index:
- এটি একটি ইন্ডেক্স যা টেবিলের একটি বা একাধিক কলামে পূর্ণ-প্রত্যাশিত টেক্সট অনুসন্ধান সক্ষম করতে ব্যবহৃত হয়। এটি ডেটা টেবিলে শব্দ বা শব্দগুচ্ছের জন্য অনুসন্ধান দক্ষতা উন্নত করে।
Full-Text Catalog তৈরি করা
Full-Text Catalog তৈরি করতে প্রথমে আপনাকে একটি Catalog তৈরি করতে হবে, যা পরে টেবিলের কলামগুলির জন্য Full-Text Index ধারণ করবে।
সিনট্যাক্স:
CREATE FULLTEXT CATALOG catalog_name
[ AS DEFAULT ]
[ WITH ACCENT_SENSITIVITY = ON | OFF ]
[ FOR { FILEGROUP filegroup_name | DEFAULT } ]
- catalog_name: আপনার Full-Text Catalog এর নাম।
- ACCENT_SENSITIVITY: এই অপশনটি চিহ্নিত করে যে, আপনি কি আক্ষরিক বা উচ্চারণ সংবেদনশীল অনুসন্ধান করতে চান কিনা।
- FILEGROUP filegroup_name: এটি ঐচ্ছিক এবং নির্দিষ্ট ফাইলগ্রুপে Full-Text Catalog তৈরি করার জন্য ব্যবহৃত হয়।
উদাহরণ:
CREATE FULLTEXT CATALOG MyFullTextCatalog
WITH ACCENT_SENSITIVITY = OFF;
এটি MyFullTextCatalog নামক একটি Full-Text Catalog তৈরি করবে, যেখানে উচ্চারণ সংবেদনশীলতা অফ থাকবে।
Full-Text Index তৈরি করা
Full-Text Index তৈরি করতে, আপনি একটি টেবিলের জন্য এক বা একাধিক কলাম নির্বাচিত করবেন, যার মাধ্যমে পূর্ণ-প্রত্যাশিত অনুসন্ধান করা হবে। এই ইনডেক্সটি ঐ টেবিলের Full-Text Catalog এর মধ্যে রাখা হবে।
সিনট্যাক্স:
CREATE FULLTEXT INDEX ON table_name (column_name)
KEY INDEX index_name
ON catalog_name
[WITH CHANGE_TRACKING { MANUAL | AUTOMATIC | OFF }]
- table_name: আপনি যেই টেবিলের উপর Full-Text Index তৈরি করতে চান।
- column_name: সেই কলামের নাম যেখানে Full-Text Index তৈরি হবে।
- index_name: আপনার প্রাথমিক বা ইউনিক ইনডেক্সের নাম যা Full-Text Index এর জন্য প্রয়োজন।
- catalog_name: আপনার তৈরি করা Full-Text Catalog এর নাম।
- CHANGE_TRACKING: এটি সিদ্ধান্ত নেয় যে ইনডেক্সটি স্বয়ংক্রিয়ভাবে বা ম্যানুয়ালি আপডেট হবে।
উদাহরণ:
-- প্রথমে প্রাথমিক ইনডেক্স তৈরি করুন (যদি না থাকে)
CREATE UNIQUE INDEX PK_Employees
ON Employees(EmployeeID);
-- তারপর Full-Text Index তৈরি করুন
CREATE FULLTEXT INDEX ON Employees (FirstName, LastName)
KEY INDEX PK_Employees
ON MyFullTextCatalog;
এটি Employees টেবিলের FirstName এবং LastName কলামগুলির উপর Full-Text Index তৈরি করবে এবং এটি PK_Employees ইনডেক্স ব্যবহার করবে।
Full-Text Index আপডেট এবং ব্যবস্থাপনা
- Change Tracking: Full-Text Index গুলি স্বয়ংক্রিয়ভাবে বা ম্যানুয়ালি আপডেট হতে পারে। আপনি AUTOMATIC, MANUAL, অথবা OFF অপশন ব্যবহার করতে পারেন।
- AUTOMATIC: ডেটাবেসে কোনো পরিবর্তন হলে, Full-Text Index স্বয়ংক্রিয়ভাবে আপডেট হয়।
- MANUAL: আপডেটগুলি স্বয়ংক্রিয়ভাবে করা হবে না, আপনাকে এটি ম্যানুয়ালি করতে হবে।
উদাহরণ (Change Tracking):
CREATE FULLTEXT INDEX ON Employees (FirstName, LastName)
KEY INDEX PK_Employees
ON MyFullTextCatalog
WITH CHANGE_TRACKING AUTOMATIC;
- Full-Text Index Rebuild: Full-Text Index গুলি সময়ে সময়ে পুনর্নির্মাণ (rebuild) করতে হতে পারে, বিশেষত যদি অনেক পরিবর্তন হয়।
উদাহরণ:
ALTER FULLTEXT INDEX ON Employees REBUILD;
এটি Employees টেবিলের Full-Text Index পুনর্নির্মাণ করবে।
Full-Text Search ব্যবহার করা
একবার Full-Text Index তৈরি হলে, আপনি CONTAINS অথবা FREETEXT ফাংশন ব্যবহার করে দ্রুত এবং কার্যকরীভাবে ডেটা অনুসন্ধান করতে পারেন।
১. CONTAINS ফাংশন:
CONTAINS ফাংশন ব্যবহার করে আপনি নির্দিষ্ট শব্দ বা শব্দগুচ্ছের উপর অনুসন্ধান করতে পারেন।
SELECT * FROM Employees
WHERE CONTAINS(FirstName, 'John');
এটি FirstName কলামে 'John' শব্দের উপস্থিতি অনুসন্ধান করবে।
২. FREETEXT ফাংশন:
FREETEXT ফাংশন ব্যবহার করে আপনি একটি প্রাকৃতিক ভাষার অনুসন্ধান করতে পারেন।
SELECT * FROM Employees
WHERE FREETEXT(FirstName, 'John');
এটি FirstName কলামে 'John' এর সমার্থক শব্দগুলির জন্য অনুসন্ধান করবে।
Full-Text Index এর সুবিধা এবং অসুবিধা
সুবিধা:
- দ্রুত অনুসন্ধান: Full-Text Index ডেটাবেসে দীর্ঘ বা অ-স্ট্রাকচারড টেক্সট অনুসন্ধান দ্রুত করে।
- কাস্টম অনুসন্ধান: CONTAINS এবং FREETEXT ফাংশন দিয়ে প্রাকৃতিক ভাষার অনুসন্ধান সম্ভব হয়।
- ক্যাপাসিটি: বড় টেক্সট ডেটা এবং ডকুমেন্টে কার্যকরীভাবে অনুসন্ধান পরিচালনা করতে সহায়ক।
অসুবিধা:
- পারফরম্যান্সের প্রভাব: বড় টেবিলের উপর Full-Text Index তৈরি করলে কিছু পারফরম্যান্স সমস্যা হতে পারে।
- অতিরিক্ত স্টোরেজ: Full-Text Index তৈরি করলে অতিরিক্ত ডিস্ক স্পেস ব্যবহার হয়।
- ব্যবস্থাপনা: Full-Text Index গুলির নিয়মিত রক্ষণাবেক্ষণ এবং আপডেট প্রয়োজন, যা অতিরিক্ত পরিশ্রমের সৃষ্টি করতে পারে।
সারাংশ
Full-Text Catalogs এবং Full-Text Indexes SQL Server-এ টেক্সট ডেটা অনুসন্ধানের জন্য অত্যন্ত গুরুত্বপূর্ণ টুল। এগুলি CONTAINS এবং FREETEXT ফাংশনের মাধ্যমে দ্রুত টেক্সট অনুসন্ধান সক্ষম করে এবং ডেটাবেসের মধ্যে আন্ডারলাইন বা অনুলিপি বিশ্লেষণ করতে সাহায্য করে। তবে, এগুলি ব্যবহারের সময় ডেটাবেস পারফরম্যান্স এবং অতিরিক্ত স্টোরেজের দিকে খেয়াল রাখতে হবে।
Read more